<?php
/*
1346. 检查整数及其两倍数是否存在
给你一个整数数组 arr，请你检查是否存在两个整数 N 和 M，满足 N 是 M 的两倍（即，N = 2 * M）。

更正式地，检查是否存在两个下标 i 和 j 满足：

i != j
0 <= i, j < arr.length
arr[i] == 2 * arr[j]


示例 1：
输入：arr = [10,2,5,3]
输出：true
解释：N = 10 是 M = 5 的两倍，即 10 = 2 * 5 。

示例 2：
输入：arr = [7,1,14,11]
输出：true
解释：N = 14 是 M = 7 的两倍，即 14 = 2 * 7 。

示例 3：
输入：arr = [3,1,7,11]
输出：false
解释：在该情况下不存在 N 和 M 满足 N = 2 * M 。

提示：
2 <= arr.length <= 500
-10^3 <= arr[i] <= 10^3

https://leetcode-cn.com/problems/check-if-n-and-its-double-exist/

*/

$arr = [7,1,14,11];
$arr = [-2,0,10,-19,4,6,-8];
$arr = [-20,8,-6,-14,0,-19,14,4];
var_dump ((new Solution1346())->checkIfExist($arr));

class Solution1346
{
    function checkIfExist($arr)
    {
        $hash = [];
        foreach ($arr as $v) {
            if (isset($hash[$v])) {
                $hash[$v]++;
            } else {
                $hash[$v] = 1;
            }
        }
        foreach ($arr as $v) {
            $n = $v * 2;
            if ($n == 0 && $hash[$n] > 1) {
                return true;
            }
            if (isset($hash[$n]) && $hash[$n] > 0 && $n != 0) {
                return true;
            }
        }
        return false;


    }

}
